Alias Analysis for Object-Oriented Programs
نویسندگان
چکیده
We present a high-level survey of state-of-the-art alias analyses for object-oriented programs, based on a years-long effort developing industrial-strength static analyses for Java. We first present common variants of points-to analysis, including a discussion of key implementation techniques. We then describe flow-sensitive techniques based on tracking of access paths, which can yield greater precision for certain clients. We also discuss how whole-program alias analysis has become less useful for modern Java programs, due to increasing use of reflection in libraries and frameworks. We have found that for real-world programs, an under-approximate alias analysis based on access-path tracking often provides the best results for a variety of practical clients.
منابع مشابه
JAAT: A Practical Alias Analysis Tool for Java Programs
When an expression refers to a memory location that is referred to by another expression, we say that there is an alias relation between those expressions. Alias analysis, i.e, the extraction of such relations is essential for efficient maintenance of object-oriented programs. Although many researchers have already proposed analysis methods and implemented prototype tools for object-oriented pr...
متن کاملFlexible Alias Protection
Aliasing is endemic in object oriented programming. Because an object can be modified via any alias, object oriented programs are hard to understand, maintain, and analyse. Flexible alias protection is a conceptual model of inter-object relationships which limits the visibility of changes via aliases, allowing objects to be aliased but mitigating the undesirable effects of aliasing. Flexible al...
متن کاملNegative Variables and the Essence of Object-Oriented Programming
Reasoning about object-oriented programs requires an appropriate technique to reflect a fundamental “general relativity” property of the approach: every operation is relative to a current object, which changes with every qualified call; such a call needs access to the context of the client object. The notion of negative variable, discussed in this article, provides a framework for reasoning abo...
متن کاملObject Ownership for Dynamic Alias Protection
Interobject references in object-oriented programs allow arbitrary aliases between objects. By breaching objects' encapsulation boundaries, these aliases can make programs hard to understand and especially hard to debug. We propose using an explicit, run-time notion of object ownership to control aliases between objects in dynamically typed languages. Dynamically checking object ownership as a ...
متن کاملAlias-based Reasoning for Object-Oriented Programs
Aliasing is the key problem that makes reasoning about reference structures hard. Large predicates have to be constructed that capture all aliasing properties of a given state. Instead of deducing the aliasing properties from a state that uses heaps and objects, we declare the alias-relation to be the state itself. We explore if such a state model provides a new and beneficial approach to the v...
متن کامل